home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / Exploit and vulnerability / s0ftpj / wu-tang.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-12-17  |  2.6 KB  |  134 lines

  1. /*
  2.  
  3.   [Wu-thang] - vulnerable wu-ftp scanner by del0rean@usa.net -  
  4.   ripped from BiT - easter 99 rippin'session - 10^10x to bELFaghor 
  5.   
  6.   ./z0ne -o f0nk.net > eepees &
  7.   ./wu-thang eepees &
  8.   cat t0b30wN3d 
  9.   
  10.   bye!
  11.  
  12. */
  13.  
  14. #include <stdio.h>
  15. #include <stdlib.h>
  16. #include <netdb.h>
  17. #include <sys/socket.h>
  18. #include <netinet/in.h>
  19. #include <arpa/inet.h>
  20. #include <netinet/ip.h>
  21. #include <string.h>
  22. #include <signal.h>
  23.  
  24. #define FTPP0RT  21
  25. #define VULN_VER1 "Version wu-2.4.2-academ[BETA-18](1)"
  26. #define VULN_VER2 "Version wu-2.4.2-academ[BETA-12]"
  27. #define VULN_VER3 "Version wu-2.4.2-academ[BETA-18-VR6]"
  28.  
  29. int ftp(char *host);
  30. unsigned long int res(char *p);
  31. void timeout(int sig);
  32. void wri(char *ver);
  33. void scan(char *i);
  34. char tobeowned[]="t0b30wN3d";               /* 31337 0utf1le :) */
  35.  
  36. void main(int argc, char **argv) {
  37.  
  38.    if(argc<2) {
  39.       printf("Wu-thang Wu-2.4.2 scanner\n");
  40.       printf("usage: %s < I n F i l e > \n", argv[0]);
  41.       return;
  42.    }
  43.    scan(argv[1]);
  44.    printf(".-|[d0ne!]|-.\n");
  45. }       
  46.  
  47. int ftp(char *host) {
  48.      
  49.      struct sockaddr_in server_addr;  
  50.      int s,check=0;                   
  51.      char buffer[300];
  52.  
  53.      server_addr.sin_addr.s_addr=res(host); 
  54.      server_addr.sin_family=AF_INET;
  55.      server_addr.sin_port = htons(FTPP0RT); 
  56.      s=socket(AF_INET,SOCK_STREAM,0);
  57.  
  58.      connect(s,(struct sockaddr *) &server_addr,sizeof(server_addr));
  59.  
  60.      signal(SIGALRM,(void *)timeout);
  61.      alarm(5);
  62.  
  63.      read(s,buffer,sizeof(buffer)); 
  64.      if(strstr(buffer,VULN_VER1)) {
  65.         wri(VULN_VER1);
  66.         return 1;
  67.      }
  68.  
  69.      if(strstr(buffer,VULN_VER2)) {
  70.         wri(VULN_VER2);
  71.         return 1;
  72.      }
  73.      if(strstr(buffer,VULN_VER3)) {
  74.         wri(VULN_VER3);
  75.         return 1;
  76.      }
  77.    return 0;
  78. }
  79.  
  80. unsigned long int res(char *p) {
  81.  
  82.    struct hostent *h;
  83.    unsigned long int rv;
  84.  
  85.    h=gethostbyname(p);
  86.    if(h!=NULL)
  87.      memcpy(&rv,h->h_addr,h->h_length); 
  88.    else                                 
  89.      rv=inet_addr(p);
  90.    return rv;
  91. }
  92.  
  93.  
  94. void timeout(int sig) {
  95.    printf("Timeout! referee...\n");
  96.    return 0;
  97. }
  98.  
  99. void wri(char *ver) {
  100.   FILE *aut;
  101.   char *version=ver;
  102.  
  103.   if((aut=fopen(tobeowned,"a")) != NULL) { 
  104.      fputs(version,aut);
  105.      fclose(aut);
  106.   }
  107. }
  108.  
  109. void scan(char *i) {
  110.  
  111.   FILE *iff, *of;
  112.   char buf[512];
  113.   char w0w[]={" It seems vuln...search for a writeable dir!\n"};
  114.  
  115.   if((iff=fopen(i,"r")) == NULL)  
  116.      perror("In English");
  117.  
  118.   while(fgets(buf,512,iff) != NULL)
  119.   {
  120.     if(buf[strlen(buf)-1]=='\n')
  121.       buf[(strlen(buf)-1)]=0;  
  122.  
  123.     if(ftp(buf) && (of=fopen(tobeowned,"a")) != NULL) {
  124.       buf[strlen(buf)+1]=0;
  125.       buf[strlen(buf)]='\n';
  126.  
  127.       fputs(w0w,of);
  128.       fputs(buf,of);
  129.       fclose(of);
  130.     }
  131.   }
  132.   fclose(iff);
  133. }
  134.